Skip to content

Implement CFL all-paths path-finding#9

Open
DanyaLitva wants to merge 38 commits intoSparseLinearAlgebra:stablefrom
DanyaLitva:stable
Open

Implement CFL all-paths path-finding#9
DanyaLitva wants to merge 38 commits intoSparseLinearAlgebra:stablefrom
DanyaLitva:stable

Conversation

@DanyaLitva
Copy link

@DanyaLitva DanyaLitva commented Mar 4, 2026

This PR adds an implementation algorithm for finding all paths based on the implementation of Rustam Azimov's algorithm for finding a single path and all paths in a graph with context-free constraints using matrix multiplication. Based on CFPQ-Core from #8

@DanyaLitva
Copy link
Author

Тесты ещё не готовы, сейчас они просто выводят матрицы, которые получились

@DanyaLitva
Copy link
Author

DanyaLitva commented Mar 4, 2026

Так же в semiring CFPQ_core добавлена вторая операция сложения add_eps для Rule [Variable -> eps]
upd: уже удалена

upd добавил функцию get_nvals, так как в матрице могут изменяться внутренние векторы и обычного GrB_Matrix_nvals недостаточно

@DanyaLitva
Copy link
Author

DanyaLitva commented Mar 4, 2026

Проверил алгоритм на примере из статьи Рустама Азимова

Из статьи:
image

Из программы:
*матрице S соответствует output 0
image

@DanyaLitva
Copy link
Author

DanyaLitva commented Mar 8, 2026

get_nvals_all_paths - подсчёт внутренних промежуточных вершин в матрице теперь реализован с помощью редукции графбласа
upd: добавил вторую версию с помощью итератора по матрице, у меня в голове это может работать лучше, надо будет потестировать

теперь занимаюсь тестами

@DanyaLitva
Copy link
Author

DanyaLitva commented Mar 8, 2026

Запустил санитайзер, оказалось что для A -> eps тоже нужно освобождать память при сложении, поэтому сейчас уберу вторую операцию сложения без освобождения памяти, она теперь не нужна

Заметил, что почти во всех тестах вылезает следующее:
Снимок экрана 2026-03-08 в 22 02 10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants